// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database()
const _ = db.command

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  
  try {
    // 获取参数
    const { type = 'list', page = 1, pageSize = 10, orderBy = 'createTime', order = 'desc' } = event
    
    // 计算跳过的记录数
    const skip = (page - 1) * pageSize
    
    let articlesList = []
    let total = 0

    try {
      // 查询文章列表
      const articlesQuery = db.collection('articles')
      
      // 根据排序字段和顺序进行排序
      let query = articlesQuery.orderBy(orderBy, order)
      
      // 分页查询
      const listRes = await query.skip(skip).limit(pageSize).get()
      
      // 获取文章总数
      const countRes = await db.collection('articles').count()
      
      // 确保返回的数据是数组
      articlesList = Array.isArray(listRes.data) ? listRes.data : []
      total = countRes.total || 0
    } catch (err) {
      // 如果是集合不存在的错误，返回空数组
      if (err.errCode === -502005) {
        console.log('articles集合不存在，返回空数组')
      } else {
        throw err
      }
    }
    
    return {
      code: 0,
      data: articlesList,
      total: total,
      page: Number(page),
      pageSize: Number(pageSize)
    }
  } catch (err) {
    console.error('获取文章列表失败', err)
    return {
      code: -1,
      message: '获取文章列表失败: ' + (err.message || err),
      error: err
    }
  }
}